package com.parcial.data.fachadas;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.parcial.data.entidades.Examen;
import com.parcial.data.util.Campo;
import com.parcial.data.util.Clave;

public class FachadaExamen extends FachadaAbstracta<Examen> {

	private static FachadaExamen fachadaExamen;
	
	public static FachadaExamen getFachadaExamen() {
		if(fachadaExamen == null) {
			fachadaExamen = new FachadaExamen();
		}
		return fachadaExamen;
	}
	
	private FachadaExamen() {
	}
	
	@Override
	protected String obtenerNombreTabla() {
		return Examen.class.getSimpleName();
	}
	
	@Override
	protected String obtenerOrderString() {
		Clave auxClave = new Clave();
		auxClave.setColumnas(Examen.columnasClave());
		return auxClave.toOrderString();
	}

	@Override
	protected List<Campo> obtenerCampos(Examen pregunta) {
		List<Campo> campos = new ArrayList<Campo>();
		campos.add(new Campo(Integer.class, pregunta.getIdExamen()));
		campos.add(new Campo(Integer.class, pregunta.getIdAlumno()));
		campos.add(new Campo(Date.class, pregunta.getFecha()));
		campos.add(new Campo(Float.class, pregunta.getNota()));
		return campos;
	}

	@Override
	protected List<Examen> convertirRS(ResultSet rs) {
		List<Examen> exams = new ArrayList<Examen>();
		try {
			while (rs.next()) {
				Examen exa = new Examen();
				exa.setIdExamen(rs.getInt("idExamen"));
				exa.setIdAlumno(rs.getInt("idAlumnoFk"));
				exa.setFecha(rs.getDate("fecha"));
				exa.setNota(rs.getFloat("nota"));
				exams.add(exa);
			}
		} catch (Exception e) {
			System.out.println("Error al obtener la lista de examenes");
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
		return exams;
	}

}
